package newsSystem.Inner.Register;
import newsSystem.Inner.Login.UserLoginPage;
import newsSystem.Inner.MainPage;
import newsSystem.dao.UserInfoJDBC;
import newsSystem.img.ImagePanel;
import newsSystem.user.UserInfo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

public class RegisterPage {
    public RegisterPage(){
        JFrame frame = new JFrame("报刊订阅管理系统");
        frame.setSize(900, 650);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(null);//设置空布局，组件想怎么放怎么放
        frame.setLocationRelativeTo(null); // 居中显示

        // 创建一个 JPanel 作为内容面板
//        JPanel contentPane = new JPanel();
        // 加载背景图像
        ImageIcon backgroundImageIcon = new ImageIcon("E:\\Java\\NewsSub_Manage_System\\src\\main\\java\\newsSystem\\img\\bgc2.jpg");
        Image backgroundImage = backgroundImageIcon.getImage();

        // 创建一个 ImagePanel，并设置背景图像
        ImagePanel contentPane = new ImagePanel(backgroundImage);
//        contentPane.setBackground(Color.CYAN); // 设置背景颜色为天蓝色
        // 设置内容面板的布局管理器
        contentPane.setLayout(null); // 设置布局管理器为null

//        欢迎面板
        JPanel welpanel=new JPanel(new BorderLayout());
        welpanel.setBounds(150,70,600,100);
        welpanel.setOpaque(false);
//       welpanel.setBackground(Color.CYAN);
        JLabel welcomeLabel = new JLabel("报刊订阅用户注册");
        // 设置字体大小为 36
        Font font = welcomeLabel.getFont();
        Font newFont = font.deriveFont(Font.BOLD, 45f);
        // 设置文字颜色为白色
        welcomeLabel.setForeground(Color.WHITE);

        welcomeLabel.setFont(newFont);
//        welcomeLabel.setBorder(new LineBorder(Color.YELLOW));
        // 添加文字到中心
        welcomeLabel.setHorizontalAlignment(SwingConstants.CENTER); // 文本水平居中
        welpanel.add(welcomeLabel,BorderLayout.CENTER);
//用户注册页面

//   管理员登录
        //按钮面板
        JPanel RegisterPanel = new JPanel(); // 使用 FlowLayout 布局管理器new FlowLayout()
        RegisterPanel.setOpaque(false);//设置为透明
        RegisterPanel.setLayout(null); // 禁用布局管理器
        RegisterPanel.setBounds(290,200,320,280);
//        LoginPanel.setBackground(Color.CYAN);
        RegisterPanel.setBorder(BorderFactory.createLineBorder(Color.GRAY));

        JLabel registerLabel = new JLabel("username:");
        registerLabel.setFont(new Font("宋体", Font.PLAIN, 18));
        registerLabel.setBounds(20, 20, 100, 30); // 设置位置和大小
        JTextField registername = new JTextField(10);
        registername.setFont(new Font("宋体", Font.PLAIN, 18));
        registername.setBounds(120, 20, 140, 30); // 设置位置和大小

        // 创建密码标签和密码框
        JLabel passwdLabel = new JLabel("Password:");
        passwdLabel.setFont(new Font("宋体", Font.PLAIN, 18));
        passwdLabel.setBounds(20, 60, 100, 30); // 设置位置和大小
        JPasswordField password = new JPasswordField(10);
        password.setFont(new Font("宋体", Font.PLAIN, 18));
        password.setBounds(120, 60, 140, 30); // 设置位置和大小

        // 创建再次输入密码标签和密码框
        JLabel repasswdLabel = new JLabel("rePassword:");
        repasswdLabel.setFont(new Font("宋体", Font.PLAIN, 18));
        repasswdLabel.setBounds(20, 100, 100, 30); // 设置位置和大小
        JPasswordField repassword = new JPasswordField(10);
        repassword.setFont(new Font("宋体", Font.PLAIN, 18));
        repassword.setBounds(120, 100, 140, 30); // 设置位置和大小

//       创建确认和返回按钮框
        JButton okbutton = new JButton("确定");
        JButton returnbttton = new JButton("返回");
        okbutton.setBounds(70,160,70,30);
        returnbttton.setBounds(180,160,70,30);
        okbutton.setContentAreaFilled(false);
        returnbttton.setContentAreaFilled(false);
        returnbttton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 在这里编写跳转到用户注册页面的逻辑
                System.out.println("返回");
//                JOptionPane.showMessageDialog(null, "跳转到用户注册页面");
                frame.setVisible(false);
                new MainPage();
            }
        });
        okbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 在这里编写跳转到用户注册页面的逻辑
                System.out.println("确定");
                // 获取用户名和密码
                String userID =registername.getText();
                String userPassword = new String(password.getPassword());
                String UserName = null;
                String UserSex = null;
                String IDCard = null;
                String Phone = null;
                String Address = null;
                //            创建管理员对象并且将其添加到集合中去
                UserInfo user=new UserInfo(userID,userPassword,UserName, UserSex,IDCard,Phone,Address);
//                调用AdminManager类中的添加add方法加入到列表中
                // 将 UserInfo 对象添加到 List<UserInfo> 中
                List<UserInfo> userList = new ArrayList<>();
                userList.add(user);
                // 遍历管理员集合
                for (UserInfo userr : userList) {
                    System.out.println("用户ID: " + userr.getUserID()   + ", 用户密码: " + userr.getUserPWD() + ", 用户名: " + userr.getUserName() + ", 用户性别: " + userr.getUserSex() + ", 身份证号: " + userr.getIDCard()+ ", 电话号码: " + userr.getPhone() + ", 地址: " + userr.getAddress());
                }
                // 将 List<UserInfo> 中的数据存入数据库中
                try {
                    // 调用方法将 userList 中的数据存入数据库中
                    UserInfoJDBC.addUsers(userList);
                    JOptionPane.showMessageDialog(null, "注册成功，请前往登录页登录");
                      frame.setVisible(false);
                      new UserLoginPage();
                   //               new MainPage();
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(frame, "Error: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        RegisterPanel.add(okbutton);
        RegisterPanel.add(returnbttton);
        RegisterPanel.add(registerLabel);
        RegisterPanel.add(registername);
        RegisterPanel.add(passwdLabel);
        RegisterPanel.add(password);

        RegisterPanel.add(repasswdLabel);
        RegisterPanel.add(repassword);

        // 将内容面板设置为 JFrame 的内容面板
        contentPane.add(RegisterPanel);

        // 将内容面板设置为 JFrame 的内容面板
        contentPane.add(welpanel);
        contentPane.add(RegisterPanel);
        frame.setContentPane(contentPane); // 将内容面板设置为窗体的内容面板

        frame.setVisible(true);

    }

    public static void main(String[] args) {
//        箭头函数
        SwingUtilities.invokeLater(() -> {
            new RegisterPage();
        });
    }
}
